package com.stefanini.pe.bbva.bp.in.dao.impl;

import java.util.HashMap;
import java.util.List;

import javax.faces.model.SelectItem;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import org.springframework.stereotype.Repository;

import com.ibatis.sqlmap.client.SqlMapClient;
import com.stefanini.pe.bbva.bp.in.dao.iface.ParametrosDAOIface;
import com.stefanini.pe.bbva.bp.in.to.CategoriaProducto;
import com.stefanini.pe.bbva.bp.in.to.UsuarioAsesor;

@Repository
public class ParametrosDAOImpl extends SqlMapClientDaoSupport implements
		ParametrosDAOIface {
	
	@Autowired
	public ParametrosDAOImpl(SqlMapClient sqlMapClient) {
		setSqlMapClient(sqlMapClient);
	}

	public List listaCriteriosBusquedaCmb() throws Exception{
		HashMap map = new HashMap();
		getSqlMapClientTemplate().queryForList(
				"BP_PARAMETROS_SqlMap.listarCriteriosBusquedaCmb", map);
		return (List) map.get("result");
	}

	public List listaCriteriosBusquedaNoCliente() throws Exception{
		HashMap map = new HashMap();
		getSqlMapClientTemplate().queryForList(
				"BP_PARAMETROS_SqlMap.listarCriteriosBusquedaNoCliente", map);
		return (List) map.get("result");
	}

	public List listaTiposClienteCmb() throws Exception{
		HashMap map = new HashMap();
		getSqlMapClientTemplate().queryForList(
				"BP_PARAMETROS_SqlMap.listarTiposClienteCmb", map);
		return (List) map.get("result");
	}

	public List listaTiposCambio() throws Exception{
		HashMap map = new HashMap();
		getSqlMapClientTemplate().queryForList(
				"BP_PARAMETROS_SqlMap.listarTiposCambio", map);
		return (List) map.get("result");
	}

	public List listaMultiTabla(String idItem, String idTabla) throws Exception{
		HashMap map = new HashMap();
		map.put("in_idtabla", idTabla);
		map.put("in_iditem", idItem);
		getSqlMapClientTemplate().queryForList(
				"BP_PARAMETROS_SqlMap.listarMultiTabla", map);
		return (List) map.get("result");
	}

	@SuppressWarnings("unchecked")
	public List<SelectItem> listaMeses() throws Exception{
		HashMap<String, Object> map = new HashMap<String, Object>();
		getSqlMapClientTemplate().queryForList(
				"BP_PARAMETROS_SqlMap.spConsultaMeses", map);
		return (List<SelectItem>) map.get("result");
	}

	@SuppressWarnings("unchecked")
	public List listaAnios() throws Exception{
		HashMap<String, Object> map = new HashMap<String, Object>();
		getSqlMapClientTemplate().queryForList(
				"BP_PARAMETROS_SqlMap.listaParametros", map);
		return (List<SelectItem>) map.get("result");
	}

	@SuppressWarnings("unchecked")
	public List<SelectItem> listaLugarContacto() throws Exception{
		HashMap<String, Object> map = new HashMap<String, Object>();
		getSqlMapClientTemplate().queryForList(
				"BP_PARAMETROS_SqlMap.spConsultaLugarContacto", map);
		return (List<SelectItem>) map.get("result");
	}

	@SuppressWarnings("unchecked")
	public List<SelectItem> listaMedioContacto() throws Exception{
		HashMap<String, Object> map = new HashMap<String, Object>();
		getSqlMapClientTemplate().queryForList(
				"BP_PARAMETROS_SqlMap.spConsultaMedioContacto", map);
		return (List<SelectItem>) map.get("result");
	}

	@SuppressWarnings("unchecked")
	public List<SelectItem> listaRazonContacto() throws Exception{
		HashMap<String, Object> map = new HashMap<String, Object>();
		getSqlMapClientTemplate().queryForList(
				"BP_PARAMETROS_SqlMap.spConsultaRazonContacto", map);
		return (List<SelectItem>) map.get("result");
	}

	@SuppressWarnings("unchecked")
	public List listarAlertasEstado() throws Exception{
		HashMap<String, Object> map = new HashMap<String, Object>();
		getSqlMapClientTemplate().queryForList(
				"BP_PARAMETROS_SqlMap.listarAlertasEstado", map);
		return (List) map.get("result");
	}

	@SuppressWarnings("unchecked")
	public List<CategoriaProducto> listarCategoriasProducto() throws Exception{
		HashMap<String, Object> map = new HashMap<String, Object>();
		getSqlMapClientTemplate().queryForList(
				"BP_PARAMETROS_SqlMap.listarCategoriasProducto", map);
		return (List<CategoriaProducto>) map.get("result");
	}
	
	@SuppressWarnings("unchecked")
	public List<CategoriaProducto> listarCategoriasProducto_PorID(int codProducto) throws Exception{
		HashMap<String, Object> map = new HashMap<String, Object>();
		map.put("in_codproducto", codProducto);
		getSqlMapClientTemplate().queryForList("BP_PARAMETROS_SqlMap.listarCategoriaProducto_PorID", map);
		return (List<CategoriaProducto>) map.get("result");
	}

	public List listaTiposUsuario() throws Exception{
		HashMap map = new HashMap();
		getSqlMapClientTemplate().queryForList(
				"BP_PARAMETROS_SqlMap.listarTiposUsuario", map);
		return (List) map.get("result");
	}
	
	public List listaAniosMetas() throws Exception{
		HashMap map = new HashMap();
		getSqlMapClientTemplate().queryForList(
				"BP_PARAMETROS_SqlMap.listarAniosMetas", map);
		return (List) map.get("result");
	}
	
	public List listaEjecutivosAAsignar(String idUsuarioAsesor) throws Exception{
		HashMap map = new HashMap();
		map.put("in_idusuarioasesor", idUsuarioAsesor);
		getSqlMapClientTemplate().queryForList(
				"BP_PARAMETROS_SqlMap.listarEjecutivosAAsignar", map);
		return (List) map.get("result");
	}
	
	public List listaTiposMetas() throws Exception{
		HashMap map = new HashMap();
		getSqlMapClientTemplate().queryForList(
				"BP_PARAMETROS_SqlMap.listarTiposMetas", map);
		return (List) map.get("result");
	}
	
	@SuppressWarnings("unchecked")
	public List listarTiposDocumento() throws Exception{
		HashMap map = new HashMap();
		getSqlMapClientTemplate().queryForList("BP_PARAMETROS_SqlMap.listarTiposDocumento",map);
		return (List)map.get("result");
	}
	
	@SuppressWarnings("unchecked")
	public List listaEjecutivosAAsignar() throws Exception{
		HashMap map = new HashMap();
		map.put("in_idusuarioasesor", "");
		getSqlMapClientTemplate().queryForList("BP_PARAMETROS_SqlMap.listaEjecutivosAAsignar",map);
		return (List)map.get("out_result_set");
	}
	
	@SuppressWarnings("unchecked")
	public List listaClientesDeEjecutivo(UsuarioAsesor usuarioAsesor) throws Exception{
		HashMap map = new HashMap();
		map.put("idusuarioasesorselec", usuarioAsesor.getIdUsuarioAsesor().toString());
		getSqlMapClientTemplate().queryForList("BP_PARAMETROS_SqlMap.listaClientesDeEjecutivo",map);
		return (List)map.get("out_result_set");
	}
	
	@SuppressWarnings("unchecked")
	public List listaTipoMeta() throws Exception{
		HashMap map = new HashMap();
		getSqlMapClientTemplate().queryForList("BP_PARAMETROS_SqlMap.listaTipoMeta",map);
		return (List)map.get("out_result_set");
	}
	
	@SuppressWarnings("unchecked")
	public List listaSecciones() throws Exception{
		HashMap map = new HashMap();
		getSqlMapClientTemplate().queryForList("BP_PARAMETROS_SqlMap.listaSecciones",map);
		return (List)map.get("out_result_set");
	}
	
	@SuppressWarnings("unchecked")
	public List listaTipoRespuestas(String idSeccion) throws Exception{
		HashMap map = new HashMap();
		map.put("in_idseccion", idSeccion);
		getSqlMapClientTemplate().queryForList("BP_PARAMETROS_SqlMap.listaTipoRespuestas",map);
		return (List)map.get("out_result_set");
	}
	
	@SuppressWarnings("unchecked")
	public List listaEscenarios() throws Exception{
		HashMap map = new HashMap();
		getSqlMapClientTemplate().queryForList("BP_PARAMETROS_SqlMap.listaEscenarios",map);
		return (List)map.get("out_result_set");
	}
	
	public List listaEjecutivosAReasignar(String idUsuarioAsesor) throws Exception{
		HashMap map = new HashMap();
		map.put("idusuarioasesor", idUsuarioAsesor);
		
		System.out.println("sp: IIAF.piiaf_administracion.sp_cons_ad_ejecutivareasignar, param: "+map);
		getSqlMapClientTemplate().queryForList("BP_PARAMETROS_SqlMap.listarEjecutivosAReasignar", map);
		return (List) map.get("result");
	}
	
	@SuppressWarnings("unchecked")
	public List listaEjecutivos(String idUsuarioAsesor) throws Exception{
		HashMap map = new HashMap();
		map.put("idusuarioasesorselec", Integer.valueOf(idUsuarioAsesor));
		map.put("idusuarioasesor", null);
		
		System.out.println("sp: IIAF.piiaf_administracion.sp_cons_ad_ejecutivpasignacion, param: "+map);
		getSqlMapClientTemplate().queryForList("BP_PARAMETROS_SqlMap.listarEjecutivos", map);
		return (List) map.get("result");
	}
	
	public List listaTiposDeAsignacion() throws Exception{
		HashMap map = new HashMap();
		getSqlMapClientTemplate().queryForList(
				"BP_PARAMETROS_SqlMap.listarTiposDeAsignacion", map);
		return (List) map.get("result");
	}

	@SuppressWarnings("unchecked")
	public List<UsuarioAsesor> listarUsuarios(UsuarioAsesor usuario) throws Exception{
		HashMap map = new HashMap();
		map.put("in_idtipoejecutivo", usuario.getIdTipoUsuario());
		map.put("in_nombreejecutivo", usuario.getNombreEjec().toString().trim().toUpperCase());
		map.put("in_nombreejecutivoacargo", usuario.getNombreEjecACargo().toString().trim().toUpperCase());
		getSqlMapClientTemplate().queryForList("BP_USUARIO_SqlMap.listarUsuarios", map);
		return (List) map.get("result");
	}
}
